Computer systems can perform many operations. It may be important that such operations not be interrupted to the extent possible. For example, a network device such as a switch or router can play a critical role in establishing and maintaining communications between nodes in a communications network. It is therefore important that the network device remain in operation as much as possible.
Software, for example, whether at the operating system layer, application layer, or at any tier in a multi-tier software architecture, is often being revised, upgraded, and patched to improve or add functionality to the computer system in which the software executes. As an example, a new internetworking protocol may be developed, or an existing protocol revised, and then software implementing such protocol installed on a network device.
Generally, when installing new software on a computing system, the operation of the system may be interrupted, at least insofar as the operation of the system that is controlled by the new software is concerned, and in fact, the computing system may even need to be shutdown and rebooted as part of the installation process. Thus, the desire to improve functionality of the computing system by installing new software often times conflicts with the goal of maintaining the computing system in an operational state as much as possible. For example, upgrading software that executes a new or improved internetworking protocol in a network device may require interrupting operation of the network device, potentially causing interruption in the communications between nodes in a communication network that rely, at least in part, on the network device to maintain such communications.